package com.pe.pgn.clubpgn.domain;

import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.compass.annotations.Searchable;
import org.hibernate.annotations.Type;
import org.springframework.format.annotation.DateTimeFormat;

@Entity
@Table(name = "clpb_tarjeta_empresa")
@Searchable
public class ClpbTarjetaEmpresa extends CamposAuditoria {

	private static final long serialVersionUID = 4024165989517202160L;
	private Long id;
	private String coCodigoTarjetaEmpresa;
	private Long coFlotaVehiculo;
	private Calendar daFechaInicioVigencia;
	private Calendar daFechaFinVigencia;
	private Calendar daFechaAsignacion;
	private Calendar daFechaAnulacion;
	private String deObservaciones;
	private boolean stTarjetaEmpresa;
	private boolean stBloqueado;
	
	@Id
    @Column(name="id")
    @SequenceGenerator(name="seqtarjetaempresa", sequenceName="seq_tarjeta_empresa")
    @GeneratedValue(generator="seqtarjetaempresa")
	public Long getId() {
		return id;
	}

	@Column(name = "co_codigo_tarjeta_empresa", length = 20, nullable = false)
	public String getCoCodigoTarjetaEmpresa() {
		return coCodigoTarjetaEmpresa;
	}

	@Column(name = "co_flota_vehiculo", length = 19)
	public Long getCoFlotaVehiculo() {
		return coFlotaVehiculo;
	}

	@Column(name = "da_fecha_inicio_vigencia", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaInicioVigencia() {
		return daFechaInicioVigencia;
	}

	@Column(name = "da_fecha_fin_vigencia", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaFinVigencia() {
		return daFechaFinVigencia;
	}

	@Column(name = "da_fecha_asignacion")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaAsignacion() {
		return daFechaAsignacion;
	}

	@Column(name = "da_fecha_anulacion")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaAnulacion() {
		return daFechaAnulacion;
	}

	@Column(name = "de_observaciones", length = 100)
	public String getDeObservaciones() {
		return deObservaciones;
	}

	@Column(name = "st_tarjeta_empresa", nullable = false)
	@Type(type = "yes_no") 
	public boolean isStTarjetaEmpresa() {
		return stTarjetaEmpresa;
	}
	
	@Column(name = "st_bloqueado")
	@Type(type = "yes_no") 
	public boolean isStBloqueado() {
		return stBloqueado;
	}

	@Column(name = "co_usuario_creador", updatable = false, nullable = false, length = 30)
	public String getCoUsuarioCreador() {
		return coUsuarioCreador;
	}

    @Column(name = "da_fecha_creacion", updatable = false, nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaCreacion() {
		return daFechaCreacion;
	}

	@Column(name = "co_usuario_modificador", length = 30)
	public String getCoUsuarioModificador() {
		return coUsuarioModificador;
	}

    @Column(name = "da_fecha_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaModificacion() {
		return daFechaModificacion;
	}
    
	public void setId(Long id) {
		this.id = id;
	}

	public void setCoCodigoTarjetaEmpresa(String coCodigoTarjetaEmpresa) {
		this.coCodigoTarjetaEmpresa = coCodigoTarjetaEmpresa;
	}

	public void setCoFlotaVehiculo(Long coFlotaVehiculo) {
		this.coFlotaVehiculo = coFlotaVehiculo;
	}

	public void setDaFechaInicioVigencia(Calendar daFechaInicioVigencia) {
		this.daFechaInicioVigencia = daFechaInicioVigencia;
	}

	public void setDaFechaFinVigencia(Calendar daFechaFinVigencia) {
		this.daFechaFinVigencia = daFechaFinVigencia;
	}

	public void setDaFechaAsignacion(Calendar daFechaAsignacion) {
		this.daFechaAsignacion = daFechaAsignacion;
	}

	public void setDaFechaAnulacion(Calendar daFechaAnulacion) {
		this.daFechaAnulacion = daFechaAnulacion;
	}

	public void setDeObservaciones(String deObservaciones) {
		this.deObservaciones = deObservaciones;
	}

	public void setStTarjetaEmpresa(boolean stTarjetaEmpresa) {
		this.stTarjetaEmpresa = stTarjetaEmpresa;
	}

	public void setStBloqueado(boolean stBloqueado) {
		this.stBloqueado = stBloqueado;
	}

	@Override
	public boolean equals(Object o) {
		return false;
	}

	@Override
	public int hashCode() {
		return 0;
	}

	@Override
	public String toString() {
		return "ClpbTarjetaEmpresa ["
		+ "  coCodigoTarjetaEmpresa=" + coCodigoTarjetaEmpresa
		+ ", coFlotaVehiculo=" + coFlotaVehiculo
		+ ", daFechaInicioVigencia=" + daFechaInicioVigencia
		+ ", daFechaFinVigencia=" + daFechaFinVigencia
		+ ", daFechaAsignacion=" + daFechaAsignacion
		+ ", daFechaAnulacion=" + daFechaAnulacion
		+ ", deObservaciones=" + deObservaciones + ", id=" + id
		+ ", stTarjetaEmpresa=" + stTarjetaEmpresa
		+ ", stBloqueado=" + stBloqueado+"]";
	}
}
